This invention relates generally to a display subsystem architecture for use in a computer graphics environment. In particular, the present invention provides a programming interface layer between the display subsystem portion of an operating system and the specific display adapters being utilized. The programming interface combines a number of device independent graphics models and device dependent display drivers such that the hardware and software capabilities of the overall system can be optimized. This combination of graphical models and device drivers is realized through a procedure known as "dynamic binding."
Originally, one or more independent drawing routine packages, such as GSL, X-Windows, or graPHIGS (all which are products of IBM Corp.) were utilized on the display subsystem. The packages tended to operate in a space sharing and time sharing mode in which each package utilized the full screen and in which the time sharing was controlled by commands input from the user. There was no sharing of the screen by two packages.
If more than one type of display adapter could be installed on the display subsystem, each independent drawing routine package would support its own device dependent control of the display adapter. The different types of display adapters would generally have unique means of entering hardware commands and unique means of representation of graphical data.
The independent graphics routine packages each maintained their own "model" of graphics. The method of passing data and commands and the functionality of the programming interface to the routines were unique to each model. The uniqueness of the model determined pronounced differences between the ways the packages would implement device dependent control of the specific display adapters.
A specific prior art graphics package provides an application interface (API) with several device drivers which are incorporated therein and associated with a specific display adapter. These device drivers are dependent upon the type of display adapter being utilized. Additionally, every package present must have a display driver for each display adapter present. Therefore, a problem arises when it is desired to change a display adapter, or add an additional display adapter, since the device drivers are actually contained within the independent graphics routine packages and each package would have to be updated with the new device driver code. Another problem arises in that there is a need to construct a number of device drivers equal to the product of the number of packages times the number of types of devices.
Prior art systems are limited in that for each new or updated device, each of the graphics packages present must also be changed. This requirement forces a software vendor to rewrite the code contained in the graphics package for each new or enhanced device. Alternatively, the vendor must teach a software user to rewrite the code, which may cause problems with regard to proprietary and confidential information. Another problem with the prior art system exists in that any new functionality, provided by added devices (display adapters), is limited to the installed graphics model. For example, if an enhanced type of display adapter was added to a prior art system using a GSL graphics model, the user would not be able to use the new features except as permitted by GSL.
Referring to FIG. 1, a prior art graphics application programming interface system is shown. Three separate application programs 51, 52, 53 are present. Application 51 is two-dimensional (2D), whereas applications 52 and 53 correspond to first and second three-dimensional (3D) applications. Next, a set of graphics packages 56, 57, 58, embodying models 10, 20, 30 are shown, each supporting applications 51, 52, 53, respectively. These packages provide a programming interface between a program application and display dependent device driver sets 70, 71, 72 as discussed in more detail below with reference to the present invention. It can be seen from FIG. 1 that each graphics package 56, 57, 58 includes a device driver set 70, 71, or 72, which must contain code that is dependent upon each display adapter present.
The programming interfaces to device driver sets 70, 71, and 72 are not necessarily the same, and there is not any particular requirement that all of the device dependent sections within a device driver have the same programming interface. In this example, display adapters 1, 2, 3, 4 are provided with corresponding dependent display driver code 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, and 92.
Therefore, the redundancy of the prior art system of FIG. 1 is apparent. That is, each device driver set 70, 71, 72 must contain code specifically written for each display adapter present. Thus, device driver set 70 includes four sets of code 81, 82, 83, and 84; device driver set 71 includes four sets of code 85, 86, 87, and 88; and, device driver set 72 includes four sets of code 89, 90, 91, and 92. There are twelve sets of code in all, which is the product of the three models times the four types of display adapters.
It can be seen that by adding or altering (by upgrading, or the like) any of the display adapters 1, 2, 3, 4, the corresponding device driver code 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, and 92 (contained in device driver sets 70, 71, 72) must also be altered. Consequently, if display adapter 4 (for example), were upgraded, then graphics package 56, 57, 58 would also need to be updated such that the display driver specific code 84, 88, and 92 would correspond to the upgraded adapter 4. The desirability of eliminating this redundancy, in order to improve efficiency, is readily apparent.
Therefore, it can be seen that there is a need for a graphics interface which provides flexibility between the graphics applications and the display adapters. It would also be advantageous to provide an interface which allows multiple graphics models to operate in conjunction with a plurality of device dependent drivers such that the full capability of the graphics models and display adapters can be exploited, without experiencing the redundancy problems present in the prior art.